package pimmodel;

/**
 * 
 * Interface IPimDaten:<br>
 * Das Interface zur Klasse PimDaten.
 * 
 * @author Thomas Schoenfeld
 * @version (20120902_01)
 *
 */
public interface IPimDaten {

	/**
	 * getName			gibt den Namen zurueck
	 * 
	 * @return			Name
	 */
	public abstract String getName();

	/**
	 * setName			aendert den Namen
	 * 
	 * @param name		der neue Name
	 * 
	 * @throws	IllegalArgumentException falls der uebergebene String ungueltig ist
	 */
	public abstract void setName(String name);

	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	public abstract String toString();

	/* (non-Javadoc)
	 * @see java.lang.Object#hashCode()
	 */
	public abstract int hashCode();

	/* (non-Javadoc)
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	public abstract boolean equals(Object obj);

	/**
	 * compareTo		erlaubt einen lexikographischen Groessenvergleich mit andererem Pim-Daten
	 * 
	 * @param			pimDaten	das zu vergleichende Pim-Datum
	 * 
	 * @return			-1, falls das aktuelle Pim-Datum lexikographisch kleiner,<br>
	 * 				 	 1, falls es groesser und<br>
	 * 				 	 0, gleich dem uebergebenen Pim-Datum ist
	 * 
	 * @throws IllegalArgumentException falls das uebergebene Objekt nicht vom Typ IPimDaten ist.
	 */
	public abstract int compareTo(IPimDaten pimDaten);

}